/*! art-template@4.9.1 for browser | https://github.com/aui/art-template */
!function (e, t) {
    "object" == typeof exports && "object" == typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define([], t) : "object" == typeof exports ? exports.template = t() : e.template = t()
}(this, function () {
    return function (e) {
        function t(r) {
            if (n[r]) return n[r].exports;
            var o = n[r] = {i: r, l: !1, exports: {}};
            return e[r].call(o.exports, o, o.exports, t), o.l = !0, o.exports
        }

        var n = {};
        return t.m = e, t.c = n, t.i = function (e) {
            return e
        }, t.d = function (e, n, r) {
            t.o(e, n) || Object.defineProperty(e, n, {configurable: !1, enumerable: !0, get: r})
        }, t.n = function (e) {
            var n = e && e.__esModule ? function () {
                return e["default"]
            } : function () {
                return e
            };
            return t.d(n, "a", n), n
        }, t.o = function (e, t) {
            return Object.prototype.hasOwnProperty.call(e, t)
        }, t.p = "", t(t.s = 22)
    }([function (e, t, n) {
        (function (t) {
            e.exports = !1;
            try {
                e.exports = "[object process]" === Object.prototype.toString.call(t.process)
            } catch (n) {
            }
        }).call(t, n(4))
    }, function (e, t, n) {
        "use strict";
        var r = n(17), o = n(2), i = n(18), s = function (e, t) {
            t.onerror(e, t);
            var n = function () {
                return "{Template Error}"
            };
            return n.mappings = [], n.sourcesContent = [], n
        }, a = function c(e) {
            var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
            "string" != typeof e ? t = e : t.source = e, t = o.$extend(t), e = t.source, t.debug && (t.cache = !1, t.bail = !1, t.minimize = !1, t.compileDebug = !0), t.compileDebug && (t.minimize = !1), t.filename && (t.filename = t.resolveFilename(t.filename, t));
            var n = t.filename, a = t.cache, u = t.caches;
            if (a && n) {
                var p = u.get(n);
                if (p) return p
            }
            if (!e) try {
                e = t.loader(n, t), t.source = e
            } catch (d) {
                var l = new i({
                    name: "CompileError",
                    path: n,
                    message: "template not found: " + d.message,
                    stack: d.stack
                });
                if (t.bail) throw l;
                return s(l, t)
            }
            var f = void 0, h = new r(t);
            try {
                f = h.build()
            } catch (l) {
                if (l = new i(l), t.bail) throw l;
                return s(l, t)
            }
            var m = function (e, n) {
                try {
                    return f(e, n)
                } catch (l) {
                    if (!t.compileDebug) return t.cache = !1, t.compileDebug = !0, c(t)(e, n);
                    if (l = new i(l), t.bail) throw l;
                    return s(l, t)()
                }
            };
            return m.mappings = f.mappings, m.sourcesContent = f.sourcesContent, m.toString = function () {
                return f.toString()
            }, a && n && u.set(n, m), m
        };
        a.Compiler = r, e.exports = a
    }, function (e, t, n) {
        "use strict";

        function r() {
            this.$extend = function (e) {
                return e = e || {}, s(e, e instanceof r ? e : this)
            }
        }

        var o = n(0), i = n(20), s = n(9), a = n(11), c = n(13), u = n(8), p = n(12), l = n(15), f = n(16), h = n(10),
            m = n(14), d = {
                source: null,
                filename: null,
                rules: [f, l],
                escape: !0,
                debug: !!o && "production" !== process.env.NODE_ENV,
                bail: !1,
                cache: !0,
                minimize: !0,
                compileDebug: !1,
                resolveFilename: m,
                include: a,
                htmlMinifier: h,
                htmlMinifierOptions: {collapseWhitespace: !0, minifyCSS: !0, minifyJS: !0, ignoreCustomFragments: []},
                onerror: c,
                loader: p,
                caches: u,
                root: "/",
                extname: ".art",
                ignore: [],
                imports: i
            };
        r.prototype = d, e.exports = new r
    }, function (e, t) {
    }, function (e, t) {
        var n;
        n = function () {
            return this
        }();
        try {
            n = n || Function("return this")() || (0, eval)("this")
        } catch (r) {
            "object" == typeof window && (n = window)
        }
        e.exports = n
    }, function (e, t) {
        Object.defineProperty(t, "__esModule", {value: !0}), t["default"] = /((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyu]{1,5}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g, t.matchToToken = function (e) {
            var t = {type: "invalid", value: e[0]};
            return e[1] ? (t.type = "string", t.closed = !(!e[3] && !e[4])) : e[5] ? t.type = "comment" : e[6] ? (t.type = "comment", t.closed = !!e[7]) : e[8] ? t.type = "regex" : e[9] ? t.type = "number" : e[10] ? t.type = "name" : e[11] ? t.type = "punctuator" : e[12] && (t.type = "whitespace"), t
        }
    }, function (e, t, n) {
        "use strict";
        e.exports = n(2)
    }, function (e, t, n) {
        "use strict";
        var r = n(1), o = function (e, t, n) {
            return r(e, n)(t)
        };
        e.exports = o
    }, function (e, t, n) {
        "use strict";
        var r = {
            __data: Object.create(null), set: function (e, t) {
                this.__data[e] = t
            }, get: function (e) {
                return this.__data[e]
            }, reset: function () {
                this.__data = {}
            }
        };
        e.exports = r
    }, function (e, t, n) {
        "use strict";
        var r = Object.prototype.toString, o = function (e) {
            return null === e ? "Null" : r.call(e).slice(8, -1)
        }, i = function s(e, t) {
            var n = void 0, r = o(e);
            if ("Object" === r ? n = Object.create(t || {}) : "Array" === r && (n = [].concat(t || [])), n) {
                for (var i in e) e.hasOwnProperty(i) && (n[i] = s(e[i], n[i]));
                return n
            }
            return e
        };
        e.exports = i
    }, function (e, t, n) {
        "use strict";
        var r = n(0), o = function (e, t) {
            if (r) {
                var o, i = n(23).minify, s = t.htmlMinifierOptions, a = t.rules.map(function (e) {
                    return e.test
                });
                (o = s.ignoreCustomFragments).push.apply(o, a), e = i(e, s)
            }
            return e
        };
        e.exports = o
    }, function (e, t, n) {
        "use strict";
        var r = function (e, t, r, o) {
            var i = n(1);
            return o = o.$extend({filename: o.resolveFilename(e, o), bail: !0, source: null}), i(o)(t, r)
        };
        e.exports = r
    }, function (e, t, n) {
        "use strict";
        var r = n(0), o = function (e) {
            if (r) {
                return n(3).readFileSync(e, "utf8")
            }
            var t = document.getElementById(e);
            return t.value || t.innerHTML
        };
        e.exports = o
    }, function (e, t, n) {
        "use strict";
        var r = function (e) {
            console.error(e.name, e.message)
        };
        e.exports = r
    }, function (e, t, n) {
        "use strict";
        var r = n(0), o = /^\.+\//, i = function (e, t) {
            if (r) {
                var i = n(3), s = t.root, a = t.extname;
                if (o.test(e)) {
                    var c = t.filename, u = !c || e === c, p = u ? s : i.dirname(c);
                    e = i.resolve(p, e)
                } else e = i.resolve(s, e);
                i.extname(e) || (e += a)
            }
            return e
        };
        e.exports = i
    }, function (e, t, n) {
        "use strict";
        var r = {
            test: /{{[ \t]*([@#]?)(\/?)([\w\W]*?)[ \t]*}}/, use: function (e, t, n, o) {
                var i = this, s = i.options, a = i.getEsTokens(o.trim()), c = a.map(function (e) {
                    return e.value
                }), u = {}, p = void 0, l = !!t && "raw", f = n + c.shift(), h = function (e, t) {
                    console.warn("Template upgrade:", "{{" + e + "}}", "->", "{{" + t + "}}", "\n", s.filename || "")
                };
                switch ("#" === t && h("#value", "@value"), f) {
                    case"set":
                        o = "var " + c.join("");
                        break;
                    case"if":
                        o = "if(" + c.join("") + "){";
                        break;
                    case"else":
                        var m = c.indexOf("if");
                        m > -1 ? (c.splice(0, m + 1), o = "}else if(" + c.join("") + "){") : o = "}else{";
                        break;
                    case"/if":
                        o = "}";
                        break;
                    case"each":
                        p = r._split(a), p.shift(), "as" === p[1] && (h("each object as value index", "each object value index"), p.splice(1, 1));
                        var d = p[0] || "$data", v = p[1] || "$value", g = p[2] || "$index";
                        o = "$each(" + d + ",function(" + v + "," + g + "){";
                        break;
                    case"/each":
                        o = "})";
                        break;
                    case"echo":
                        f = "print", h("echo value", "value");
                    case"print":
                    case"include":
                    case"extend":
                        p = r._split(a), p.shift(), o = f + "(" + p.join(",") + ")";
                        break;
                    case"block":
                        o = "block(" + c.join("") + ",function(){";
                        break;
                    case"/block":
                        o = "})";
                        break;
                    default:
                        if (-1 !== c.indexOf("|")) {
                            for (var y = f, b = [], x = c.filter(function (e) {
                                return !/^\s+$/.test(e)
                            }); "|" !== x[0];) y += x.shift();
                            x.filter(function (e) {
                                return ":" !== e
                            }).forEach(function (e) {
                                "|" === e ? b.push([]) : b[b.length - 1].push(e)
                            }), b.reduce(function (e, t) {
                                var n = t.shift();
                                return t.unshift(e), o = "$imports." + n + "(" + t.join(",") + ")"
                            }, y)
                        } else s.imports[f] ? (h("filterName value", "value | filterName"), p = r._split(a), p.shift(), o = f + "(" + p.join(",") + ")", l = "raw") : o = "" + f + c.join("");
                        l || (l = "escape")
                }
                return u.code = o, u.output = l, u
            }, _split: function (e) {
                for (var t = 0, n = e.shift(), r = [[n]]; t < e.length;) {
                    var o = e[t], i = o.type;
                    "whitespace" !== i && "comment" !== i && ("punctuator" === n.type && "]" !== n.value || "punctuator" === i ? r[r.length - 1].push(o) : r.push([o]), n = o), t++
                }
                return r.map(function (e) {
                    return e.map(function (e) {
                        return e.value
                    }).join("")
                })
            }
        };
        e.exports = r
    }, function (e, t, n) {
        "use strict";
        var r = {
            test: /<%(#?)((?:==|=#|[=-])?)([\w\W]*?)(-?)%>/, use: function (e, t, n, r) {
                return n = {
                    "-": "raw",
                    "=": "escape",
                    "": !1,
                    "==": "raw",
                    "=#": "raw"
                }[n], t && (r = "/*" + e + "*/", n = !1), {code: r, output: n}
            }
        };
        e.exports = r
    }, function (e, t, n) {
        "use strict";

        function r(e, t) {
            if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
        }

        var o = n(19), i = n(21), s = "$data", a = "$imports", c = "print", u = "include", p = "extend", l = "block",
            f = "$$out", h = "$$line", m = "$$blocks", d = "$$from", v = "$$options", g = function (e, t) {
                return e.hasOwnProperty(t)
            }, y = JSON.stringify, b = function () {
                function e(t) {
                    var n, o, g = this;
                    r(this, e);
                    var y = t.source, b = t.minimize, x = t.htmlMinifier;
                    if (this.options = t, this.stacks = [], this.context = [], this.scripts = [], this.CONTEXT_MAP = {}, this.ignore = [s, a, v].concat(t.ignore), this.internal = (n = {}, n[f] = "''", n[h] = "[0,0]", n[m] = "arguments[1]||{}", n[d] = "null", n[c] = "function(){" + f + "+=''.concat.apply('',arguments)}", n[u] = "function(src,data){" + f + "+=" + v + ".include(src,data||" + s + ",arguments[2]||" + m + "," + v + ")}", n[p] = "function(from){" + d + "=from}", n[l] = "function(name,callback){if(" + d + "){" + f + "='';callback();" + m + "[name]=" + f + "}else{if(typeof " + m + "[name]==='string'){" + f + "+=" + m + "[name]}else{callback()}}}", n), this.dependencies = (o = {}, o[c] = [f], o[u] = [f, v, s, m], o[p] = [d, u], o[l] = [d, f, m], o), this.importContext(f), t.compileDebug && this.importContext(h), b) try {
                        y = x(y, t)
                    } catch (w) {
                    }
                    this.source = y, this.getTplTokens(y, t.rules, this).forEach(function (e) {
                        e.type === i.TYPE_STRING ? g.parseString(e) : g.parseExpression(e)
                    })
                }

                return e.prototype.getTplTokens = function () {
                    return i.apply(undefined, arguments)
                }, e.prototype.getEsTokens = function (e) {
                    return o(e)
                }, e.prototype.getVariables = function (e) {
                    var t = !1;
                    return e.filter(function (e) {
                        return "whitespace" !== e.type && "comment" !== e.type
                    }).filter(function (e) {
                        return "name" === e.type && !t || (t = "punctuator" === e.type && "." === e.value, !1)
                    }).map(function (e) {
                        return e.value
                    })
                }, e.prototype.importContext = function (e) {
                    var t = this, n = "", r = this.internal, o = this.dependencies, i = this.ignore, c = this.context,
                        u = this.options, p = u.imports, l = this.CONTEXT_MAP;
                    g(l, e) || -1 !== i.indexOf(e) || (g(r, e) ? (n = r[e], g(o, e) && o[e].forEach(function (e) {
                        return t.importContext(e)
                    })) : n = "$escape" === e || "$each" === e || g(p, e) ? a + "." + e : s + "." + e, l[e] = n, c.push({
                        name: e,
                        value: n
                    }))
                }, e.prototype.parseString = function (e) {
                    var t = e.value;
                    if (t) {
                        var n = f + "+=" + y(t);
                        this.scripts.push({source: t, tplToken: e, code: n})
                    }
                }, e.prototype.parseExpression = function (e) {
                    var t = this, n = e.value, r = e.script, o = r.output, s = r.code;
                    o && (s = !1 === escape || o === i.TYPE_RAW ? f + "+=" + r.code : f + "+=$escape(" + r.code + ")");
                    var a = this.getEsTokens(s);
                    this.getVariables(a).forEach(function (e) {
                        return t.importContext(e)
                    }), this.scripts.push({source: n, tplToken: e, code: s})
                }, e.prototype.checkExpression = function (e) {
                    for (var t = [[/^\s*}[\w\W]*?{?[\s;]*$/, ""], [/(^[\w\W]*?\([\w\W]*?(?:=>|\([\w\W]*?\))\s*{[\s;]*$)/, "$1})"], [/(^[\w\W]*?\([\w\W]*?\)\s*{[\s;]*$)/, "$1}"]], n = 0; n < t.length;) {
                        if (t[n][0].test(e)) {
                            var r;
                            e = (r = e).replace.apply(r, t[n]);
                            break
                        }
                        n++
                    }
                    try {
                        return new Function(e), !0
                    } catch (o) {
                        return !1
                    }
                }, e.prototype.build = function () {
                    var e = this.options, t = this.context, n = this.scripts, r = this.stacks, o = this.source,
                        c = e.filename, l = e.imports, b = [], x = g(this.CONTEXT_MAP, p), w = 0, k = function (e, t) {
                            var n = t.line, o = t.start,
                                i = {generated: {line: r.length + w + 1, column: 1}, original: {line: n + 1, column: o + 1}};
                            return w += e.split(/\n/).length - 1, i
                        }, E = function (e) {
                            return e.replace(/^[\t ]+|[\t ]$/g, "")
                        };
                    r.push("function(" + s + "){"), r.push("'use strict'"), r.push(s + "=" + s + "||{}"), r.push("var " + t.map(function (e) {
                        return e.name + "=" + e.value
                    }).join(",")), e.compileDebug ? (r.push("try{"), n.forEach(function (e) {
                        e.tplToken.type === i.TYPE_EXPRESSION && r.push(h + "=[" + [e.tplToken.line, e.tplToken.start].join(",") + "]"), b.push(k(e.code, e.tplToken)), r.push(E(e.code))
                    }), r.push("}catch(error){"), r.push("throw {" + ["name:'RuntimeError'", "path:" + y(c), "message:error.message", "line:" + h + "[0]+1", "column:" + h + "[1]+1", "source:" + y(o), "stack:error.stack"].join(",") + "}"), r.push("}")) : n.forEach(function (e) {
                        b.push(k(e.code, e.tplToken)), r.push(E(e.code))
                    }), x && (r.push(f + "=''"), r.push(u + "(" + d + "," + s + "," + m + ")")), r.push("return " + f), r.push("}");
                    var T = r.join("\n");
                    try {
                        var O = new Function(a, v, "return " + T)(l, e);
                        return O.mappings = b, O.sourcesContent = [o], O
                    } catch (S) {
                        for (var $ = 0, j = 0, _ = 0; $ < n.length;) {
                            var C = n[$];
                            if (!this.checkExpression(C.code)) {
                                j = C.tplToken.line, _ = C.tplToken.start;
                                break
                            }
                            $++
                        }
                        throw{
                            name: "CompileError",
                            path: c,
                            message: S.message,
                            line: j + 1,
                            column: _ + 1,
                            source: o,
                            generated: T,
                            stack: S.stack
                        }
                    }
                }, e
            }();
        b.CONSTS = {
            DATA: s,
            IMPORTS: a,
            PRINT: c,
            INCLUDE: u,
            EXTEND: p,
            BLOCK: l,
            OPTIONS: v,
            OUT: f,
            LINE: h,
            BLOCKS: m,
            FROM: d,
            ESCAPE: "$escape",
            EACH: "$each"
        }, e.exports = b
    }, function (e, t, n) {
        "use strict";

        function r(e, t) {
            if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
        }

        function o(e, t) {
            if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
            return !t || "object" != typeof t && "function" != typeof t ? e : t
        }

        function i(e, t) {
            if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + typeof t);
            e.prototype = Object.create(t && t.prototype, {
                constructor: {
                    value: e,
                    enumerable: !1,
                    writable: !0,
                    configurable: !0
                }
            }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t)
        }

        var s = function (e) {
            function t(n) {
                r(this, t);
                var i = o(this, e.call(this, n)), s = n.message;
                return t.debugTypes[n.name] && (n.source && (s = t.debug(n)), i.path = n.path), i.name = "TemplateError", i.message = s, i
            }

            return i(t, e), t.debug = function (e) {
                var t = e.source, n = e.path, r = e.line, o = e.column, i = t.split(/\n/), s = Math.max(r - 3, 0),
                    a = Math.min(i.length, r + 3), c = i.slice(s, a).map(function (e, t) {
                        var n = t + s + 1;
                        return (n === r ? " >> " : "    ") + n + "| " + e
                    }).join("\n");
                return (n || "anonymous") + ":" + r + ":" + o + "\n" + c + "\n\n" + e.message
            }, t
        }(Error);
        s.debugTypes = {RuntimeError: !0, CompileError: !0}, e.exports = s
    }, function (e, t, n) {
        "use strict";
        var r = n(24), o = n(5)["default"], i = n(5).matchToToken, s = function (e) {
            return e.match(o).map(function (e) {
                return o.lastIndex = 0, i(o.exec(e))
            }).map(function (e) {
                return "name" === e.type && r(e.value) && (e.type = "keyword"), e
            })
        };
        e.exports = s
    }, function (e, t, n) {
        "use strict";
        (function (t) {/*! art-template@runtime | https://github.com/aui/art-template */
            var r = n(0), o = Object.create(r ? t : window), i = function p(e) {
                return "string" != typeof e && (e = e === undefined || null === e ? "" : "function" == typeof e ? p(e.call(e)) : JSON.stringify(e)), e
            }, s = /["&'<>]/, a = function (e) {
                var t = "" + e, n = s.exec(t);
                if (!n) return e;
                var r = "", o = void 0, i = void 0, a = void 0;
                for (o = n.index, i = 0; o < t.length; o++) {
                    switch (t.charCodeAt(o)) {
                        case 34:
                            a = "&#34;";
                            break;
                        case 38:
                            a = "&#38;";
                            break;
                        case 39:
                            a = "&#39;";
                            break;
                        case 60:
                            a = "&#60;";
                            break;
                        case 62:
                            a = "&#62;";
                            break;
                        default:
                            continue
                    }
                    i !== o && (r += t.substring(i, o)), i = o + 1, r += a
                }
                return i !== o ? r + t.substring(i, o) : r
            }, c = function (e) {
                return a(i(e))
            }, u = function (e, t) {
                if (Array.isArray(e)) for (var n = 0, r = e.length; n < r; n++) t(e[n], n, e); else for (var o in e) t(e[o], o)
            };
            o.$each = u, o.$escape = c, e.exports = o
        }).call(t, n(4))
    }, function (e, t, n) {
        "use strict";
        var r = function (e, t, n) {
            for (var r = [{
                type: "string",
                value: e,
                line: 0,
                start: 0,
                end: e.length
            }], o = 0; o < t.length; o++) !function (e) {
                for (var t = e.test.ignoreCase ? "ig" : "g", o = e.test.source + "|^$|[\\w\\W]", i = new RegExp(o, t), s = 0; s < r.length; s++) if ("string" === r[s].type) {
                    for (var a = r[s].line, c = r[s].start, u = r[s].end, p = r[s].value.match(i), l = [], f = 0; f < p.length; f++) {
                        var h = p[f];
                        e.test.lastIndex = 0;
                        var m = e.test.exec(h), d = m ? "expression" : "string", v = l[l.length - 1], g = v || r[s],
                            y = g.value;
                        c = g.line === a ? v ? v.end : c : y.length - y.lastIndexOf("\n") - 1, u = c + h.length;
                        var b = {type: d, value: h, line: a, start: c, end: u};
                        if ("string" === d) v && "string" === v.type ? (v.value += h, v.end += h.length) : l.push(b); else {
                            var x = e.use.apply(n, m);
                            b.script = x, l.push(b)
                        }
                        a += h.split(/\n/).length - 1
                    }
                    r.splice.apply(r, [s, 1].concat(l)), s += l.length - 1
                }
            }(t[o]);
            return r
        };
        r.TYPE_STRING = "string", r.TYPE_EXPRESSION = "expression", r.TYPE_RAW = "raw", r.TYPE_ESCAPE = "escape", e.exports = r
    }, function (e, t, n) {
        "use strict";
        var r = n(7), o = n(1), i = n(6), s = function (e, t) {
            return t instanceof Object ? r({filename: e}, t) : o({filename: e, source: t})
        };
        s.render = r, s.compile = o, s.defaults = i, e.exports = s
    }, function (e, t) {
        !function (e) {
            e.noop = function () {
            }
        }("object" == typeof e && "object" == typeof e.exports ? e.exports : window)
    }, function (e, t, n) {
        "use strict";
        var r = {
            "abstract": !0,
            await: !0,
            "boolean": !0,
            "break": !0,
            "byte": !0,
            "case": !0,
            "catch": !0,
            "char": !0,
            "class": !0,
            "const": !0,
            "continue": !0,
            "debugger": !0,
            "default": !0,
            "delete": !0,
            "do": !0,
            "double": !0,
            "else": !0,
            "enum": !0,
            "export": !0,
            "extends": !0,
            "false": !0,
            "final": !0,
            "finally": !0,
            "float": !0,
            "for": !0,
            "function": !0,
            "goto": !0,
            "if": !0,
            "implements": !0,
            "import": !0,
            "in": !0,
            "instanceof": !0,
            "int": !0,
            "interface": !0,
            "let": !0,
            "long": !0,
            "native": !0,
            "new": !0,
            "null": !0,
            "package": !0,
            "private": !0,
            "protected": !0,
            "public": !0,
            "return": !0,
            "short": !0,
            "static": !0,
            "super": !0,
            "switch": !0,
            "synchronized": !0,
            "this": !0,
            "throw": !0,
            "transient": !0,
            "true": !0,
            "try": !0,
            "typeof": !0,
            "var": !0,
            "void": !0,
            "volatile": !0,
            "while": !0,
            "with": !0,
            "yield": !0
        };
        e.exports = function (e) {
            return r.hasOwnProperty(e)
        }
    }])
});

layui.define(function (exports) { //提示：模块也可以依赖其它模块，如：layui.define('layer', callback);

//小数点后保留两位小数

    template.defaults.imports.numberFormat = function (date, fixed) {
        if (isNaN(date)) {
            return "";
        }
        return date.toFixed(fixed);
    };

//小数点后保留四位小数并拼接%

    template.defaults.imports.percentFormat = function (date) {

        if (isNaN(date)) {
            return "";
        }

        var number = date.toFixed(4);
        var percent = (number * 100).toFixed(2);
        return percent + "%";


    };

//格式化日期(截取掉时间)

    template.defaults.imports.dateFormat = function (date) {

        var dates = date.substring(0, 10);
        return dates;


    };


//截取艺术品名称
    template.defaults.imports.goodsNameFormat = function (date, length) {

        if (date.length > length) {
            var dates = date.substring(0, length) + "...";
            return dates;
        }
        else {
            return date;
        }

    };


//截取字符串后四位

    template.defaults.imports.substrFormat = function (date) {

        var dates = date.substring(date.length - 4);
        return dates;
    };
    exports('template', {});
});  
